package com.hh.hot100;

/**
 * @author hanghao
 * @date 2023/8/4 16:25
 * 只出现一次的数字
 * easy
 * 本题核心在于： 异或
 * 异或解法：异或运算满足交换律，a^b^a=a^a^b=b,因此ans相当于nums[0]^nums[1]^nums[2]^nums[3]^nums[4]..... 
 * 然后再根据交换律把相等的合并到一块儿进行异或（结果为0），然后再与只出现过一次的元素进行异或，这样最后的结果就是，
 * 只出现过一次的元素（0^任意值=任意值）
 */
public class No136 {
    private static int singleNumber(int[] nums) {
        int res = nums[0];
        for (int i = 1; i < nums.length; i++) {
            res = res ^ nums[i];
        }
        return res;
    }

    public static void main(String[] args) {
        int[] ints = new int[]{3,1,2,3,2};
        int i = singleNumber(ints);
        System.out.println(i);
    }
}
